package javax.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 
 * 
 * @author christopher.beatty
 * @version 1.0 [2007.01.01]
 */
@Target( { ElementType.TYPE, 
           ElementType.FIELD, 
           ElementType.CONSTRUCTOR, 
           ElementType.METHOD } 
       )
@Retention(RetentionPolicy.SOURCE)
@Documented
public @interface Version {
    
    String   major()   default "[unassigned]";
    String   minor()   default "[unassigned]";
    String   patch()   default "[unassigned]";
    String   date()    default "[unknown]";
    State    status()  default State.DEVELOPMENT;
    Author[] authors() default @Author;
    
    /**
     * 
     * 
     * @author christopher.beatty
     * @version 1.0 [2007.01.01]
     */
    public enum State { DEVELOPMENT, ALPHA, BETA, STABLE, PRODUCTION; }
           
}
